package scales;

import midi.IntervalOperations.interval;
import midi.patterns.Intervalable;

public enum ScalesEnum implements Intervalable{
	Major{ public interval[] getIntervals() {return MajorIntervals;} },
	HarmonicMinor{ public interval[] getIntervals() {return HarmonicMinorIntervals;} },
	MelodicMinor{ public interval[] getIntervals() {return MelodicMinorIntervals;} },
	NaturalMinor{ public interval[] getIntervals() {return NaturalMinorIntervals;} },
	Pentatonic{ public interval[] getIntervals() {return PentatonicIntervals;} },
	Pentatonic2{ public interval[] getIntervals() {return Pentatonic2Intervals;} };
	
	public abstract interval[] getIntervals();
	
	private static final interval[] MajorIntervals = {interval.Unison, interval.MajorSecond,
		interval.MajorThird, interval.PerfectFourth, interval.PerfectFifth, interval.MajorSixth, 
		interval.MajorSeventh, interval.Octave};
	
	private static final interval[] HarmonicMinorIntervals = {interval.Unison, interval.MajorSecond,
		interval.MinorThird, interval.PerfectFourth, interval.PerfectFifth, interval.MinorSixth,
		interval.MajorSeventh, interval.Octave};
	
	private static final interval[] MelodicMinorIntervals = {interval.Unison, interval.MajorSecond,
		interval.MinorThird,interval.PerfectFourth, interval.PerfectFifth, interval.MajorSixth,
		interval.MajorSeventh, interval.Octave};
	
	private static final interval[] NaturalMinorIntervals = {interval.Unison, interval.MajorSecond,
		interval.MinorThird, interval.PerfectFourth, interval.PerfectFifth, interval.MinorSixth,
		interval.MinorSeventh, interval.Octave};
	
	private static final interval[] PentatonicIntervals = {interval.Unison, interval.MajorSecond,
		interval.MajorThird, interval.PerfectFifth, interval.MajorSixth};
	
	private static final interval[] Pentatonic2Intervals = {interval.Unison, interval.MajorSecond,
		interval.PerfectFourth, interval.PerfectFifth, interval.MajorSixth};
	

	
}
